1. Field of the Invention
The present invention relates generally to computer systems and, more particularly, to memory controller designs for use in high performance computer systems. Still more particularly, the invention relates to the configuration and operation of an arbiter in a memory controller to permit some types of memory requests to be arbitrated synchronously while other types to be arbitrated asynchronously.
2. Background of the Invention
A personal computer system includes a number of components with specialized functions that cooperatively interact to produce the many effects available in modern computer systems. Early computer systems had relatively few components. As an example, some of the early computer systems included a processor (or CPU), random access memory (RAM), and certain peripheral devices such as a floppy drive, a keyboard and a display. These components typically were coupled together using a network of address, data and control lines, commonly referred to as a "bus."
As computer technology evolved, it became common to connect additional peripheral devices to the computer to provide additional functionality. FIG. 1 shows a representative prior art computer system that includes a CPU coupled to a bridge logic device via a CPU bus. The bridge logic device is sometimes referred to as a "North bridge" for no other reason than it often is depicted at the upper end of a computer system drawing. The North bridge also couples to the main memory array by a memory bus. The North bridge couples the CPU and memory to the peripheral devices in the system through a PCI bus or other expansion bus (such as an EISA bus). The North bridge interconnects and controls the flow of information between the CPU, the memory, the PCI bus, and other buses and devices as desired. Various components that understand PCI protocol may reside on the PCI bus, such as a graphics controller.
If other expansion busses are provided in the computer system, another bridge logic device typically is used to couple the PCI bus to that expansion bus. This bridge logic is sometimes referred to as a "South bridge" reflecting its location vis-a-vis the North bridge in a typical computer system drawing. An example of such bridge logic is described in U.S. Pat. No. 5,634,073, assigned to Compaq Computer Corporation. In FIG. 1, the South bridge couples the PCI bus to an ISA bus. Various ISA-compatible devices are shown coupled to the ISA bus.
The North bridge typically incorporates a memory controller which receives memory access requests and generates standard control signals on the memory bus necessary to access the memory. The memory subsystem typical of most personal computers generally permits only one memory transaction to occur at a time. The North bridge, however, represents a central point through which all requests for memory (either to write data to or read data from memory) must pass. Because many of the devices in a typical computer system, such as those shown in FIG. 1, may need to access memory, the memory controller in the North bridge performs an arbitration function to decide which device in the computer system will be permitted access to memory.
The arbiter in an exemplary memory controller typically implements a predetermined algorithm for deciding which one of a number of pending memory requests to execute ("service") next. The arbitration decision is repeated at regular intervals, often every 10 nanoseconds (10.times.10.sup.-9 seconds) or so. A number of steps occur in each arbitration interval. For example, the memory controller may compare the memory address of the request that won arbitration with the previously accessed memory addresses to determine if a match exists. If a match does exist, one or more clock cycles can be saved in set up time for the memory address. As the number of devices that may need access to memory increases in a computer system, the ability of the memory controller to arbitrate and then respond to the winning request in a timely fashion becomes increasingly more difficult.
Memory arbitration typically occurs "synchronously." That is, the arbiter receives the pending memory requests and, at one time decides to which request to award arbitration. This decision is synchronized to an "edge" of a clock signal. A clock signal is a voltage signal whose magnitude toggles (or oscillates) between two voltage levels in a rhythmic, repeating pattern. The winner of arbitration is decided on a rising or falling edge of the clock signal. Memory controllers usually respond to the winning memory request within the next clock cycle. If the clock is a 100 megahertz signal (i.e., the clock signal includes 100 million cycles per second, the memory controller thus would have to respond to the winning request within one cycle, or 10 nanoseconds. Although the amount of time to arbitrate and then respond to a winning memory request may have been sufficient for early computer systems, it is increasingly more difficult to accomplish these tasks in current computer systems which include more and more components requiring access to memory.
For the foregoing reasons, a computer system that includes a memory controller that alleviates the burden described above of previous memory controllers is needed. Such a memory controller would preferably include an arbitration unit that permits sufficient arbitration of the pending memory requests. Unfortunately, to date, no such device is known that provides these features.